It is known to control the operation of multiple processors using ‘process state control messages’—that is, messages flowing between processors and comprising data identifying a particular processor and describing the state of a process associated with that processor. For example, each processor may be associated with an input queue (e.g. defined by a router device) and be arranged to receive data packets after they reach the front of the queue (e.g. pass into a data switch in the router device which interconnects the input queues to the processors). In this case, the ‘process state control message’ is referred to as a ‘flow control message’, and indicates the state of the input queue for that processor. The current state data may be a 4 level indicator specifying that the queue is in one of the four states ‘empty’, ‘filling up’, ‘nearly full’, and ‘very full’; however in other implementations the data indicates one of only two states (‘empty’ and ‘very full’). In an example of particular relevance to the present application, a data processing system may be of the kind disclosed in WO 00/38375 including two processors: a first processor which is a network processor generating data packets and the other processor being an input port administration processor creating flow control messages to which the network processor is required to respond.
Flow control messages can be generated from any queue (e.g. by an input device which implements that queue), and in any order. In many systems, multiple messages can be sent from each queue, as it moves between states an unrestricted number of times.
The importance of minimizing the time taken to deliver a given flow control message to its destination varies according to the state which the message indicates. For example, a flow control message carrying an ‘empty’ notification is signalling to the recipient of the message, e.g. the network processor, that the network processor is free to send data to the queue which is the subject of the message; a delay in the transmission of such a message merely results in a loss of efficiency since the network processor may have traffic to deliver but is unable to do so. However, if the flow control message contains a ‘very full’ notification, this means that the network processor must not send any more data for this queue, since there is no more room to store it. Accordingly a ‘very full’ notification may be considered as more important than an ‘empty’ notification.
Accordingly, one might contemplate prioritizing status updates. If so, however, there are some rules that must be obeyed. Consider the sequence ‘very full’, ‘empty’, ‘very full’ relating to the same queue. Simply reordering the messages according to their respective priorities would create the sequence ‘very full’, ‘very full’, ‘empty’. This would be invalid since the result at the end of the sequence is different from last known state of the queue. On the other hand, assuming that none of the messages has already been transmitted, just transmitting ‘very full’ (the latest known state) would be valid since it brings the network processor up to date with the current state of the queue.